package main

import "fmt"

// 接口实现的条件
// 一个对象只要实现了接口中的方法，那么就实现了这个接口。换句话，接口就是一个需要实现的方法列表
type Sayer interface {
	say()
}

type dog struct{}

type cat struct{}

func (d dog) say() {
	fmt.Println("汪汪汪")
}

func (c cat) say() {
	fmt.Println("喵喵喵")
}

func main() {
	var x Sayer
	a := cat{}
	d := dog{}
	x = a
	x.say()
	x = d
	d.say()
}
